<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=emulateIE7" />
    <title>Coverage for D:\PyCharm\PyCharm 2019.3.1\plugins\python\helpers\pycharm\teamcity\messages.py: 59%</title>
    <link rel="stylesheet" href="style.css" type="text/css">
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="jquery.hotkeys.js"></script>
    <script type="text/javascript" src="jquery.isonscreen.js"></script>
    <script type="text/javascript" src="coverage_html.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(coverage.pyfile_ready);
    </script>
</head>
<body class="pyfile">
<div id="header">
    <div class="content">
        <h1>Coverage for <b>D:\PyCharm\PyCharm 2019.3.1\plugins\python\helpers\pycharm\teamcity\messages.py</b> :
            <span class="pc_cov">59%</span>
        </h1>
        <img id="keyboard_icon" src="keybd_closed.png" alt="Show keyboard shortcuts" />
        <h2 class="stats">
            153 statements &nbsp;
            <span class="run shortkey_r button_toggle_run">90 run</span>
            <span class="mis show_mis shortkey_m button_toggle_mis">63 missing</span>
            <span class="exc show_exc shortkey_x button_toggle_exc">0 excluded</span>
        </h2>
    </div>
</div>
<div class="help_panel">
    <img id="panel_icon" src="keybd_open.png" alt="Hide keyboard shortcuts" />
    <p class="legend">Hot-keys on this page</p>
    <div>
    <p class="keyhelp">
        <span class="key">r</span>
        <span class="key">m</span>
        <span class="key">x</span>
        <span class="key">p</span> &nbsp; toggle line displays
    </p>
    <p class="keyhelp">
        <span class="key">j</span>
        <span class="key">k</span> &nbsp; next/prev highlighted chunk
    </p>
    <p class="keyhelp">
        <span class="key">0</span> &nbsp; (zero) top of page
    </p>
    <p class="keyhelp">
        <span class="key">1</span> &nbsp; (one) first highlighted chunk
    </p>
    </div>
</div>
<div id="source">
    <p id="t1" class="pln"><span class="n"><a href="#t1">1</a></span><span class="t"><span class="com"># coding=utf-8</span>&nbsp;</span><span class="r"></span></p>
    <p id="t2" class="run"><span class="n"><a href="#t2">2</a></span><span class="t"><span class="key">import</span> <span class="nam">errno</span>&nbsp;</span><span class="r"></span></p>
    <p id="t3" class="run"><span class="n"><a href="#t3">3</a></span><span class="t"><span class="key">from</span> <span class="nam">functools</span> <span class="key">import</span> <span class="nam">wraps</span>&nbsp;</span><span class="r"></span></p>
    <p id="t4" class="run"><span class="n"><a href="#t4">4</a></span><span class="t"><span class="key">import</span> <span class="nam">sys</span>&nbsp;</span><span class="r"></span></p>
    <p id="t5" class="run"><span class="n"><a href="#t5">5</a></span><span class="t"><span class="key">import</span> <span class="nam">time</span>&nbsp;</span><span class="r"></span></p>
    <p id="t6" class="pln"><span class="n"><a href="#t6">6</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t7" class="pln"><span class="n"><a href="#t7">7</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t8" class="run"><span class="n"><a href="#t8">8</a></span><span class="t"><span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">&lt;</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span> <span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t9" class="pln"><span class="n"><a href="#t9">9</a></span><span class="t">    <span class="com"># Python 2</span>&nbsp;</span><span class="r"></span></p>
    <p id="t10" class="pln"><span class="n"><a href="#t10">10</a></span><span class="t">    <span class="com"># flake8: noqa</span>&nbsp;</span><span class="r"></span></p>
    <p id="t11" class="mis show_mis"><span class="n"><a href="#t11">11</a></span><span class="t">    <span class="nam">text_type</span> <span class="op">=</span> <span class="nam">unicode</span>&nbsp;</span><span class="r"></span></p>
    <p id="t12" class="pln"><span class="n"><a href="#t12">12</a></span><span class="t"><span class="key">else</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t13" class="pln"><span class="n"><a href="#t13">13</a></span><span class="t">    <span class="com"># Python 3</span>&nbsp;</span><span class="r"></span></p>
    <p id="t14" class="run"><span class="n"><a href="#t14">14</a></span><span class="t">    <span class="nam">text_type</span> <span class="op">=</span> <span class="nam">str</span>&nbsp;</span><span class="r"></span></p>
    <p id="t15" class="pln"><span class="n"><a href="#t15">15</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t16" class="pln"><span class="n"><a href="#t16">16</a></span><span class="t"><span class="com"># Capture some time functions to allow monkeypatching them in tests</span>&nbsp;</span><span class="r"></span></p>
    <p id="t17" class="run"><span class="n"><a href="#t17">17</a></span><span class="t"><span class="nam">_time</span> <span class="op">=</span> <span class="nam">time</span><span class="op">.</span><span class="nam">time</span>&nbsp;</span><span class="r"></span></p>
    <p id="t18" class="run"><span class="n"><a href="#t18">18</a></span><span class="t"><span class="nam">_localtime</span> <span class="op">=</span> <span class="nam">time</span><span class="op">.</span><span class="nam">localtime</span>&nbsp;</span><span class="r"></span></p>
    <p id="t19" class="run"><span class="n"><a href="#t19">19</a></span><span class="t"><span class="nam">_strftime</span> <span class="op">=</span> <span class="nam">time</span><span class="op">.</span><span class="nam">strftime</span>&nbsp;</span><span class="r"></span></p>
    <p id="t20" class="pln"><span class="n"><a href="#t20">20</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t21" class="run"><span class="n"><a href="#t21">21</a></span><span class="t"><span class="nam">_quote</span> <span class="op">=</span> <span class="op">{</span><span class="str">"'"</span><span class="op">:</span> <span class="str">"|'"</span><span class="op">,</span> <span class="str">"|"</span><span class="op">:</span> <span class="str">"||"</span><span class="op">,</span> <span class="str">"\n"</span><span class="op">:</span> <span class="str">"|n"</span><span class="op">,</span> <span class="str">"\r"</span><span class="op">:</span> <span class="str">"|r"</span><span class="op">,</span> <span class="str">'['</span><span class="op">:</span> <span class="str">'|['</span><span class="op">,</span> <span class="str">']'</span><span class="op">:</span> <span class="str">'|]'</span><span class="op">}</span>&nbsp;</span><span class="r"></span></p>
    <p id="t22" class="pln"><span class="n"><a href="#t22">22</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t23" class="pln"><span class="n"><a href="#t23">23</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t24" class="run"><span class="n"><a href="#t24">24</a></span><span class="t"><span class="key">def</span> <span class="nam">escape_value</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t25" class="run"><span class="n"><a href="#t25">25</a></span><span class="t">    <span class="key">return</span> <span class="str">""</span><span class="op">.</span><span class="nam">join</span><span class="op">(</span><span class="nam">_quote</span><span class="op">.</span><span class="nam">get</span><span class="op">(</span><span class="nam">x</span><span class="op">,</span> <span class="nam">x</span><span class="op">)</span> <span class="key">for</span> <span class="nam">x</span> <span class="key">in</span> <span class="nam">value</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t26" class="pln"><span class="n"><a href="#t26">26</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t27" class="pln"><span class="n"><a href="#t27">27</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t28" class="run"><span class="n"><a href="#t28">28</a></span><span class="t"><span class="key">def</span> <span class="nam">retry_on_EAGAIN</span><span class="op">(</span><span class="nam">callable</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t29" class="pln"><span class="n"><a href="#t29">29</a></span><span class="t">    <span class="com"># self.output seems to be non-blocking when running under teamcity.</span>&nbsp;</span><span class="r"></span></p>
    <p id="t30" class="run"><span class="n"><a href="#t30">30</a></span><span class="t">    <span class="op">@</span><span class="nam">wraps</span><span class="op">(</span><span class="nam">callable</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t31" class="pln"><span class="n"><a href="#t31">31</a></span><span class="t">    <span class="key">def</span> <span class="nam">wrapped</span><span class="op">(</span><span class="op">*</span><span class="nam">args</span><span class="op">,</span> <span class="op">**</span><span class="nam">kwargs</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t32" class="run"><span class="n"><a href="#t32">32</a></span><span class="t">        <span class="nam">start_time</span> <span class="op">=</span> <span class="nam">_time</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t33" class="run"><span class="n"><a href="#t33">33</a></span><span class="t">        <span class="key">while</span> <span class="key">True</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t34" class="run"><span class="n"><a href="#t34">34</a></span><span class="t">            <span class="key">try</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t35" class="run"><span class="n"><a href="#t35">35</a></span><span class="t">                <span class="key">return</span> <span class="nam">callable</span><span class="op">(</span><span class="op">*</span><span class="nam">args</span><span class="op">,</span> <span class="op">**</span><span class="nam">kwargs</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t36" class="mis show_mis"><span class="n"><a href="#t36">36</a></span><span class="t">            <span class="key">except</span> <span class="nam">IOError</span> <span class="key">as</span> <span class="nam">e</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t37" class="mis show_mis"><span class="n"><a href="#t37">37</a></span><span class="t">                <span class="key">if</span> <span class="nam">e</span><span class="op">.</span><span class="nam">errno</span> <span class="op">!=</span> <span class="nam">errno</span><span class="op">.</span><span class="nam">EAGAIN</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t38" class="mis show_mis"><span class="n"><a href="#t38">38</a></span><span class="t">                    <span class="key">raise</span>&nbsp;</span><span class="r"></span></p>
    <p id="t39" class="pln"><span class="n"><a href="#t39">39</a></span><span class="t">                <span class="com"># Give up after a minute.</span>&nbsp;</span><span class="r"></span></p>
    <p id="t40" class="mis show_mis"><span class="n"><a href="#t40">40</a></span><span class="t">                <span class="key">if</span> <span class="nam">_time</span><span class="op">(</span><span class="op">)</span> <span class="op">-</span> <span class="nam">start_time</span> <span class="op">></span> <span class="num">60</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t41" class="mis show_mis"><span class="n"><a href="#t41">41</a></span><span class="t">                    <span class="key">raise</span>&nbsp;</span><span class="r"></span></p>
    <p id="t42" class="mis show_mis"><span class="n"><a href="#t42">42</a></span><span class="t">                <span class="nam">time</span><span class="op">.</span><span class="nam">sleep</span><span class="op">(</span><span class="num">.1</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t43" class="run"><span class="n"><a href="#t43">43</a></span><span class="t">    <span class="key">return</span> <span class="nam">wrapped</span>&nbsp;</span><span class="r"></span></p>
    <p id="t44" class="pln"><span class="n"><a href="#t44">44</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t45" class="pln"><span class="n"><a href="#t45">45</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t46" class="run"><span class="n"><a href="#t46">46</a></span><span class="t"><span class="key">class</span> <span class="nam">TeamcityServiceMessages</span><span class="op">(</span><span class="nam">object</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t47" class="run"><span class="n"><a href="#t47">47</a></span><span class="t">    <span class="key">def</span> <span class="nam">__init__</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">output</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">now</span><span class="op">=</span><span class="nam">_time</span><span class="op">,</span> <span class="nam">encoding</span><span class="op">=</span><span class="str">'auto'</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t48" class="run"><span class="n"><a href="#t48">48</a></span><span class="t">        <span class="key">if</span> <span class="nam">output</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t49" class="run"><span class="n"><a href="#t49">49</a></span><span class="t">            <span class="nam">output</span> <span class="op">=</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">stdout</span>&nbsp;</span><span class="r"></span></p>
    <p id="t50" class="run"><span class="n"><a href="#t50">50</a></span><span class="t">        <span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">&lt;</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span> <span class="op">)</span> <span class="key">or</span> <span class="key">not</span> <span class="nam">hasattr</span><span class="op">(</span><span class="nam">output</span><span class="op">,</span> <span class="str">'buffer'</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t51" class="mis show_mis"><span class="n"><a href="#t51">51</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">output</span> <span class="op">=</span> <span class="nam">output</span>&nbsp;</span><span class="r"></span></p>
    <p id="t52" class="pln"><span class="n"><a href="#t52">52</a></span><span class="t">        <span class="key">else</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t53" class="run"><span class="n"><a href="#t53">53</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">output</span> <span class="op">=</span> <span class="nam">output</span><span class="op">.</span><span class="nam">buffer</span>&nbsp;</span><span class="r"></span></p>
    <p id="t54" class="run"><span class="n"><a href="#t54">54</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">now</span> <span class="op">=</span> <span class="nam">now</span>&nbsp;</span><span class="r"></span></p>
    <p id="t55" class="pln"><span class="n"><a href="#t55">55</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t56" class="run"><span class="n"><a href="#t56">56</a></span><span class="t">        <span class="key">if</span> <span class="nam">encoding</span> <span class="key">and</span> <span class="nam">encoding</span> <span class="op">!=</span> <span class="str">'auto'</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t57" class="mis show_mis"><span class="n"><a href="#t57">57</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">encoding</span> <span class="op">=</span> <span class="nam">encoding</span>&nbsp;</span><span class="r"></span></p>
    <p id="t58" class="run"><span class="n"><a href="#t58">58</a></span><span class="t">        <span class="key">elif</span> <span class="nam">getattr</span><span class="op">(</span><span class="nam">output</span><span class="op">,</span> <span class="str">'encoding'</span><span class="op">,</span> <span class="key">None</span><span class="op">)</span> <span class="key">or</span> <span class="nam">encoding</span> <span class="op">==</span> <span class="str">'auto'</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t59" class="pln"><span class="n"><a href="#t59">59</a></span><span class="t">            <span class="com"># Default encoding to 'utf-8' because it sucks if we fail with a</span>&nbsp;</span><span class="r"></span></p>
    <p id="t60" class="pln"><span class="n"><a href="#t60">60</a></span><span class="t">            <span class="com"># `UnicodeEncodeError` simply because LANG didn't get propagated to</span>&nbsp;</span><span class="r"></span></p>
    <p id="t61" class="pln"><span class="n"><a href="#t61">61</a></span><span class="t">            <span class="com"># a subprocess or something and sys.stdout.encoding is None</span>&nbsp;</span><span class="r"></span></p>
    <p id="t62" class="run"><span class="n"><a href="#t62">62</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">encoding</span> <span class="op">=</span> <span class="nam">getattr</span><span class="op">(</span><span class="nam">output</span><span class="op">,</span> <span class="str">'encoding'</span><span class="op">,</span> <span class="key">None</span><span class="op">)</span> <span class="key">or</span> <span class="str">'utf-8'</span>&nbsp;</span><span class="r"></span></p>
    <p id="t63" class="pln"><span class="n"><a href="#t63">63</a></span><span class="t">        <span class="key">else</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t64" class="mis show_mis"><span class="n"><a href="#t64">64</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">encoding</span> <span class="op">=</span> <span class="key">None</span>&nbsp;</span><span class="r"></span></p>
    <p id="t65" class="pln"><span class="n"><a href="#t65">65</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t66" class="run"><span class="n"><a href="#t66">66</a></span><span class="t">    <span class="key">def</span> <span class="nam">encode</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t67" class="run"><span class="n"><a href="#t67">67</a></span><span class="t">        <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">encoding</span> <span class="key">and</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">value</span><span class="op">,</span> <span class="nam">text_type</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t68" class="run"><span class="n"><a href="#t68">68</a></span><span class="t">            <span class="nam">value</span> <span class="op">=</span> <span class="nam">value</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">encoding</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t69" class="run"><span class="n"><a href="#t69">69</a></span><span class="t">        <span class="key">return</span> <span class="nam">value</span>&nbsp;</span><span class="r"></span></p>
    <p id="t70" class="pln"><span class="n"><a href="#t70">70</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t71" class="run"><span class="n"><a href="#t71">71</a></span><span class="t">    <span class="key">def</span> <span class="nam">decode</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t72" class="run"><span class="n"><a href="#t72">72</a></span><span class="t">        <span class="key">if</span> <span class="nam">self</span><span class="op">.</span><span class="nam">encoding</span> <span class="key">and</span> <span class="key">not</span> <span class="nam">isinstance</span><span class="op">(</span><span class="nam">value</span><span class="op">,</span> <span class="nam">text_type</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t73" class="mis show_mis"><span class="n"><a href="#t73">73</a></span><span class="t">            <span class="nam">value</span> <span class="op">=</span> <span class="nam">value</span><span class="op">.</span><span class="nam">decode</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">encoding</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t74" class="run"><span class="n"><a href="#t74">74</a></span><span class="t">        <span class="key">return</span> <span class="nam">value</span>&nbsp;</span><span class="r"></span></p>
    <p id="t75" class="pln"><span class="n"><a href="#t75">75</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t76" class="run"><span class="n"><a href="#t76">76</a></span><span class="t">    <span class="key">if</span> <span class="nam">sys</span><span class="op">.</span><span class="nam">version_info</span> <span class="op">&lt;</span> <span class="op">(</span><span class="num">3</span><span class="op">,</span> <span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t77" class="mis show_mis"><span class="n"><a href="#t77">77</a></span><span class="t">        <span class="key">def</span> <span class="nam">escapeValue</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t78" class="mis show_mis"><span class="n"><a href="#t78">78</a></span><span class="t">            <span class="key">return</span> <span class="nam">escape_value</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t79" class="pln"><span class="n"><a href="#t79">79</a></span><span class="t">    <span class="key">else</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t80" class="run"><span class="n"><a href="#t80">80</a></span><span class="t">        <span class="key">def</span> <span class="nam">escapeValue</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t81" class="run"><span class="n"><a href="#t81">81</a></span><span class="t">            <span class="key">return</span> <span class="nam">escape_value</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">decode</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t82" class="pln"><span class="n"><a href="#t82">82</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t83" class="run"><span class="n"><a href="#t83">83</a></span><span class="t">    <span class="key">def</span> <span class="nam">message</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">messageName</span><span class="op">,</span> <span class="op">**</span><span class="nam">properties</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t84" class="run"><span class="n"><a href="#t84">84</a></span><span class="t">        <span class="nam">current_time</span> <span class="op">=</span> <span class="nam">self</span><span class="op">.</span><span class="nam">now</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t85" class="run"><span class="n"><a href="#t85">85</a></span><span class="t">        <span class="op">(</span><span class="nam">current_time_int</span><span class="op">,</span> <span class="nam">current_time_fraction</span><span class="op">)</span> <span class="op">=</span> <span class="nam">divmod</span><span class="op">(</span><span class="nam">current_time</span><span class="op">,</span> <span class="num">1</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t86" class="run"><span class="n"><a href="#t86">86</a></span><span class="t">        <span class="nam">current_time_struct</span> <span class="op">=</span> <span class="nam">_localtime</span><span class="op">(</span><span class="nam">current_time_int</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t87" class="pln"><span class="n"><a href="#t87">87</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t88" class="run"><span class="n"><a href="#t88">88</a></span><span class="t">        <span class="nam">timestamp</span> <span class="op">=</span> <span class="nam">_strftime</span><span class="op">(</span><span class="str">"%Y-%m-%dT%H:%M:%S."</span><span class="op">,</span> <span class="nam">current_time_struct</span><span class="op">)</span> <span class="op">+</span> <span class="str">"%03d"</span> <span class="op">%</span> <span class="op">(</span><span class="nam">int</span><span class="op">(</span><span class="nam">current_time_fraction</span> <span class="op">*</span> <span class="num">1000</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t89" class="run"><span class="n"><a href="#t89">89</a></span><span class="t">        <span class="nam">message</span> <span class="op">=</span> <span class="op">(</span><span class="str">"##teamcity[%s timestamp='%s'"</span> <span class="op">%</span> <span class="op">(</span><span class="nam">messageName</span><span class="op">,</span> <span class="nam">timestamp</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t90" class="pln"><span class="n"><a href="#t90">90</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t91" class="run"><span class="n"><a href="#t91">91</a></span><span class="t">        <span class="key">for</span> <span class="nam">k</span> <span class="key">in</span> <span class="nam">sorted</span><span class="op">(</span><span class="nam">properties</span><span class="op">.</span><span class="nam">keys</span><span class="op">(</span><span class="op">)</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t92" class="run"><span class="n"><a href="#t92">92</a></span><span class="t">            <span class="nam">value</span> <span class="op">=</span> <span class="nam">properties</span><span class="op">[</span><span class="nam">k</span><span class="op">]</span>&nbsp;</span><span class="r"></span></p>
    <p id="t93" class="run"><span class="n"><a href="#t93">93</a></span><span class="t">            <span class="key">if</span> <span class="nam">value</span> <span class="key">is</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t94" class="run"><span class="n"><a href="#t94">94</a></span><span class="t">                <span class="key">continue</span>&nbsp;</span><span class="r"></span></p>
    <p id="t95" class="pln"><span class="n"><a href="#t95">95</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t96" class="run"><span class="n"><a href="#t96">96</a></span><span class="t">            <span class="nam">message</span> <span class="op">+=</span> <span class="op">(</span><span class="str">" %s='%s'"</span> <span class="op">%</span> <span class="op">(</span><span class="nam">k</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">escapeValue</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t97" class="pln"><span class="n"><a href="#t97">97</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t98" class="run"><span class="n"><a href="#t98">98</a></span><span class="t">        <span class="nam">message</span> <span class="op">+=</span> <span class="op">(</span><span class="str">"]\n"</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t99" class="pln"><span class="n"><a href="#t99">99</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t100" class="pln"><span class="n"><a href="#t100">100</a></span><span class="t">        <span class="com"># Python may buffer it for a long time, flushing helps to see real-time result</span>&nbsp;</span><span class="r"></span></p>
    <p id="t101" class="run"><span class="n"><a href="#t101">101</a></span><span class="t">        <span class="nam">retry_on_EAGAIN</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">output</span><span class="op">.</span><span class="nam">write</span><span class="op">)</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="nam">message</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t102" class="run"><span class="n"><a href="#t102">102</a></span><span class="t">        <span class="nam">retry_on_EAGAIN</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">output</span><span class="op">.</span><span class="nam">flush</span><span class="op">)</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t103" class="pln"><span class="n"><a href="#t103">103</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t104" class="run"><span class="n"><a href="#t104">104</a></span><span class="t">    <span class="key">def</span> <span class="nam">_single_value_message</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">messageName</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t105" class="mis show_mis"><span class="n"><a href="#t105">105</a></span><span class="t">        <span class="nam">message</span> <span class="op">=</span> <span class="op">(</span><span class="str">"##teamcity[%s '%s']\n"</span> <span class="op">%</span> <span class="op">(</span><span class="nam">messageName</span><span class="op">,</span> <span class="nam">self</span><span class="op">.</span><span class="nam">escapeValue</span><span class="op">(</span><span class="nam">value</span><span class="op">)</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t106" class="pln"><span class="n"><a href="#t106">106</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t107" class="pln"><span class="n"><a href="#t107">107</a></span><span class="t">        <span class="com"># Python may buffer it for a long time, flushing helps to see real-time result</span>&nbsp;</span><span class="r"></span></p>
    <p id="t108" class="mis show_mis"><span class="n"><a href="#t108">108</a></span><span class="t">        <span class="nam">retry_on_EAGAIN</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">output</span><span class="op">.</span><span class="nam">write</span><span class="op">)</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">encode</span><span class="op">(</span><span class="nam">message</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t109" class="mis show_mis"><span class="n"><a href="#t109">109</a></span><span class="t">        <span class="nam">retry_on_EAGAIN</span><span class="op">(</span><span class="nam">self</span><span class="op">.</span><span class="nam">output</span><span class="op">.</span><span class="nam">flush</span><span class="op">)</span><span class="op">(</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t110" class="pln"><span class="n"><a href="#t110">110</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t111" class="run"><span class="n"><a href="#t111">111</a></span><span class="t">    <span class="key">def</span> <span class="nam">blockOpened</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t112" class="mis show_mis"><span class="n"><a href="#t112">112</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'blockOpened'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">name</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t113" class="pln"><span class="n"><a href="#t113">113</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t114" class="run"><span class="n"><a href="#t114">114</a></span><span class="t">    <span class="key">def</span> <span class="nam">blockClosed</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t115" class="mis show_mis"><span class="n"><a href="#t115">115</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'blockClosed'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">name</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t116" class="pln"><span class="n"><a href="#t116">116</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t117" class="pln"><span class="n"><a href="#t117">117</a></span><span class="t">    <span class="com"># Special PyCharm-specific extension to track subtests, additional property is ignored by TeamCity</span>&nbsp;</span><span class="r"></span></p>
    <p id="t118" class="run"><span class="n"><a href="#t118">118</a></span><span class="t">    <span class="key">def</span> <span class="nam">subTestBlockOpened</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">subTestResult</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t119" class="mis show_mis"><span class="n"><a href="#t119">119</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'blockOpened'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">name</span><span class="op">,</span> <span class="nam">subTestResult</span><span class="op">=</span><span class="nam">subTestResult</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t120" class="pln"><span class="n"><a href="#t120">120</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t121" class="run"><span class="n"><a href="#t121">121</a></span><span class="t">    <span class="key">def</span> <span class="nam">block</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t122" class="mis show_mis"><span class="n"><a href="#t122">122</a></span><span class="t">        <span class="key">import</span> <span class="nam">teamcity</span><span class="op">.</span><span class="nam">context_managers</span> <span class="key">as</span> <span class="nam">cm</span>&nbsp;</span><span class="r"></span></p>
    <p id="t123" class="mis show_mis"><span class="n"><a href="#t123">123</a></span><span class="t">        <span class="key">return</span> <span class="nam">cm</span><span class="op">.</span><span class="nam">block</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">name</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t124" class="pln"><span class="n"><a href="#t124">124</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t125" class="run"><span class="n"><a href="#t125">125</a></span><span class="t">    <span class="key">def</span> <span class="nam">compilationStarted</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">compiler</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t126" class="mis show_mis"><span class="n"><a href="#t126">126</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'compilationStarted'</span><span class="op">,</span> <span class="nam">compiler</span><span class="op">=</span><span class="nam">compiler</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t127" class="pln"><span class="n"><a href="#t127">127</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t128" class="run"><span class="n"><a href="#t128">128</a></span><span class="t">    <span class="key">def</span> <span class="nam">compilationFinished</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">compiler</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t129" class="mis show_mis"><span class="n"><a href="#t129">129</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'compilationFinished'</span><span class="op">,</span> <span class="nam">compiler</span><span class="op">=</span><span class="nam">compiler</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t130" class="pln"><span class="n"><a href="#t130">130</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t131" class="run"><span class="n"><a href="#t131">131</a></span><span class="t">    <span class="key">def</span> <span class="nam">compilation</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">compiler</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t132" class="mis show_mis"><span class="n"><a href="#t132">132</a></span><span class="t">        <span class="key">import</span> <span class="nam">teamcity</span><span class="op">.</span><span class="nam">context_managers</span> <span class="key">as</span> <span class="nam">cm</span>&nbsp;</span><span class="r"></span></p>
    <p id="t133" class="mis show_mis"><span class="n"><a href="#t133">133</a></span><span class="t">        <span class="key">return</span> <span class="nam">cm</span><span class="op">.</span><span class="nam">compilation</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">compiler</span><span class="op">=</span><span class="nam">compiler</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t134" class="pln"><span class="n"><a href="#t134">134</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t135" class="run"><span class="n"><a href="#t135">135</a></span><span class="t">    <span class="key">def</span> <span class="nam">testSuiteStarted</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">suiteName</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t136" class="mis show_mis"><span class="n"><a href="#t136">136</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testSuiteStarted'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">suiteName</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t137" class="pln"><span class="n"><a href="#t137">137</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t138" class="run"><span class="n"><a href="#t138">138</a></span><span class="t">    <span class="key">def</span> <span class="nam">testSuiteFinished</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">suiteName</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t139" class="mis show_mis"><span class="n"><a href="#t139">139</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testSuiteFinished'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">suiteName</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t140" class="pln"><span class="n"><a href="#t140">140</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t141" class="run"><span class="n"><a href="#t141">141</a></span><span class="t">    <span class="key">def</span> <span class="nam">testSuite</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t142" class="mis show_mis"><span class="n"><a href="#t142">142</a></span><span class="t">        <span class="key">import</span> <span class="nam">teamcity</span><span class="op">.</span><span class="nam">context_managers</span> <span class="key">as</span> <span class="nam">cm</span>&nbsp;</span><span class="r"></span></p>
    <p id="t143" class="mis show_mis"><span class="n"><a href="#t143">143</a></span><span class="t">        <span class="key">return</span> <span class="nam">cm</span><span class="op">.</span><span class="nam">testSuite</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">name</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t144" class="pln"><span class="n"><a href="#t144">144</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t145" class="run"><span class="n"><a href="#t145">145</a></span><span class="t">    <span class="key">def</span> <span class="nam">testStarted</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">,</span> <span class="nam">captureStandardOutput</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">metainfo</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t146" class="pln"><span class="n"><a href="#t146">146</a></span><span class="t">        <span class="str">"""</span>&nbsp;</span><span class="r"></span></p>
    <p id="t147" class="pln"><span class="n"><a href="#t147">147</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t148" class="pln"><span class="n"><a href="#t148">148</a></span><span class="t"><span class="str">        :param metainfo: Used to pass any payload from test runner to Intellij. See IDEA-176950</span>&nbsp;</span><span class="r"></span></p>
    <p id="t149" class="pln"><span class="n"><a href="#t149">149</a></span><span class="t"><span class="str">        """</span>&nbsp;</span><span class="r"></span></p>
    <p id="t150" class="mis show_mis"><span class="n"><a href="#t150">150</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testStarted'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">captureStandardOutput</span><span class="op">=</span><span class="nam">captureStandardOutput</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">,</span> <span class="nam">metainfo</span><span class="op">=</span><span class="nam">metainfo</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t151" class="pln"><span class="n"><a href="#t151">151</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t152" class="run"><span class="n"><a href="#t152">152</a></span><span class="t">    <span class="key">def</span> <span class="nam">testFinished</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">,</span> <span class="nam">testDuration</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t153" class="mis show_mis"><span class="n"><a href="#t153">153</a></span><span class="t">        <span class="key">if</span> <span class="nam">testDuration</span> <span class="key">is</span> <span class="key">not</span> <span class="key">None</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t154" class="mis show_mis"><span class="n"><a href="#t154">154</a></span><span class="t">            <span class="nam">duration_ms</span> <span class="op">=</span> <span class="nam">testDuration</span><span class="op">.</span><span class="nam">days</span> <span class="op">*</span> <span class="num">86400000</span> <span class="op">+</span> <span class="xx">\</span>&nbsp;</span><span class="r"></span></p>
    <p id="t155" class="pln"><span class="n"><a href="#t155">155</a></span><span class="t">                <span class="nam">testDuration</span><span class="op">.</span><span class="nam">seconds</span> <span class="op">*</span> <span class="num">1000</span> <span class="op">+</span> <span class="xx">\</span>&nbsp;</span><span class="r"></span></p>
    <p id="t156" class="pln"><span class="n"><a href="#t156">156</a></span><span class="t">                <span class="nam">int</span><span class="op">(</span><span class="nam">testDuration</span><span class="op">.</span><span class="nam">microseconds</span> <span class="op">/</span> <span class="num">1000</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t157" class="mis show_mis"><span class="n"><a href="#t157">157</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testFinished'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">duration</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">duration_ms</span><span class="op">)</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t158" class="pln"><span class="n"><a href="#t158">158</a></span><span class="t">        <span class="key">else</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t159" class="mis show_mis"><span class="n"><a href="#t159">159</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testFinished'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t160" class="pln"><span class="n"><a href="#t160">160</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t161" class="run"><span class="n"><a href="#t161">161</a></span><span class="t">    <span class="key">def</span> <span class="nam">test</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">,</span> <span class="nam">captureStandardOutput</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">testDuration</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t162" class="mis show_mis"><span class="n"><a href="#t162">162</a></span><span class="t">        <span class="key">import</span> <span class="nam">teamcity</span><span class="op">.</span><span class="nam">context_managers</span> <span class="key">as</span> <span class="nam">cm</span>&nbsp;</span><span class="r"></span></p>
    <p id="t163" class="mis show_mis"><span class="n"><a href="#t163">163</a></span><span class="t">        <span class="key">return</span> <span class="nam">cm</span><span class="op">.</span><span class="nam">test</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">captureStandardOutput</span><span class="op">=</span><span class="nam">captureStandardOutput</span><span class="op">,</span> <span class="nam">testDuration</span><span class="op">=</span><span class="nam">testDuration</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t164" class="pln"><span class="n"><a href="#t164">164</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t165" class="pln"><span class="n"><a href="#t165">165</a></span><span class="t">    <span class="com"># Unsupported in TeamCity, used in IntellIJ-based IDEs to predict number of tests to be run in the test session</span>&nbsp;</span><span class="r"></span></p>
    <p id="t166" class="run"><span class="n"><a href="#t166">166</a></span><span class="t">    <span class="key">def</span> <span class="nam">testCount</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">count</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t167" class="run"><span class="n"><a href="#t167">167</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testCount'</span><span class="op">,</span> <span class="nam">count</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">count</span><span class="op">)</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t168" class="pln"><span class="n"><a href="#t168">168</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t169" class="run"><span class="n"><a href="#t169">169</a></span><span class="t">    <span class="key">def</span> <span class="nam">testIgnored</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t170" class="mis show_mis"><span class="n"><a href="#t170">170</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testIgnored'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="nam">message</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t171" class="pln"><span class="n"><a href="#t171">171</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t172" class="run"><span class="n"><a href="#t172">172</a></span><span class="t">    <span class="key">def</span> <span class="nam">testFailed</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">details</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">,</span> <span class="nam">comparison_failure</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t173" class="mis show_mis"><span class="n"><a href="#t173">173</a></span><span class="t">        <span class="key">if</span> <span class="key">not</span> <span class="nam">comparison_failure</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t174" class="mis show_mis"><span class="n"><a href="#t174">174</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testFailed'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="nam">message</span><span class="op">,</span> <span class="nam">details</span><span class="op">=</span><span class="nam">details</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t175" class="pln"><span class="n"><a href="#t175">175</a></span><span class="t">        <span class="key">else</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t176" class="mis show_mis"><span class="n"><a href="#t176">176</a></span><span class="t">            <span class="nam">diff_message</span> <span class="op">=</span> <span class="str">u"\n{0} != {1}\n"</span><span class="op">.</span><span class="nam">format</span><span class="op">(</span><span class="nam">comparison_failure</span><span class="op">.</span><span class="nam">actual</span><span class="op">,</span> <span class="nam">comparison_failure</span><span class="op">.</span><span class="nam">expected</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t177" class="mis show_mis"><span class="n"><a href="#t177">177</a></span><span class="t">            <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testFailed'</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t178" class="pln"><span class="n"><a href="#t178">178</a></span><span class="t">                         <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t179" class="pln"><span class="n"><a href="#t179">179</a></span><span class="t">                         <span class="nam">message</span><span class="op">=</span><span class="nam">text_type</span><span class="op">(</span><span class="nam">message</span><span class="op">)</span> <span class="op">+</span> <span class="nam">text_type</span><span class="op">(</span><span class="nam">diff_message</span><span class="op">)</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t180" class="pln"><span class="n"><a href="#t180">180</a></span><span class="t">                         <span class="nam">details</span><span class="op">=</span><span class="nam">details</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t181" class="pln"><span class="n"><a href="#t181">181</a></span><span class="t">                         <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t182" class="pln"><span class="n"><a href="#t182">182</a></span><span class="t">                         <span class="nam">type</span><span class="op">=</span><span class="str">"comparisonFailure"</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t183" class="pln"><span class="n"><a href="#t183">183</a></span><span class="t">                         <span class="nam">actual</span><span class="op">=</span><span class="nam">comparison_failure</span><span class="op">.</span><span class="nam">actual</span><span class="op">,</span>&nbsp;</span><span class="r"></span></p>
    <p id="t184" class="pln"><span class="n"><a href="#t184">184</a></span><span class="t">                         <span class="nam">expected</span><span class="op">=</span><span class="nam">comparison_failure</span><span class="op">.</span><span class="nam">expected</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t185" class="pln"><span class="n"><a href="#t185">185</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t186" class="run"><span class="n"><a href="#t186">186</a></span><span class="t">    <span class="key">def</span> <span class="nam">testStdOut</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">,</span> <span class="nam">out</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t187" class="mis show_mis"><span class="n"><a href="#t187">187</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testStdOut'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">out</span><span class="op">=</span><span class="nam">out</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t188" class="pln"><span class="n"><a href="#t188">188</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t189" class="run"><span class="n"><a href="#t189">189</a></span><span class="t">    <span class="key">def</span> <span class="nam">testStdErr</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">testName</span><span class="op">,</span> <span class="nam">out</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t190" class="mis show_mis"><span class="n"><a href="#t190">190</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'testStdErr'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">testName</span><span class="op">,</span> <span class="nam">out</span><span class="op">=</span><span class="nam">out</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t191" class="pln"><span class="n"><a href="#t191">191</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t192" class="run"><span class="n"><a href="#t192">192</a></span><span class="t">    <span class="key">def</span> <span class="nam">publishArtifacts</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">path</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t193" class="mis show_mis"><span class="n"><a href="#t193">193</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">_single_value_message</span><span class="op">(</span><span class="str">'publishArtifacts'</span><span class="op">,</span> <span class="nam">path</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t194" class="pln"><span class="n"><a href="#t194">194</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t195" class="run"><span class="n"><a href="#t195">195</a></span><span class="t">    <span class="key">def</span> <span class="nam">progressMessage</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t196" class="mis show_mis"><span class="n"><a href="#t196">196</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">_single_value_message</span><span class="op">(</span><span class="str">'progressMessage'</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t197" class="pln"><span class="n"><a href="#t197">197</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t198" class="run"><span class="n"><a href="#t198">198</a></span><span class="t">    <span class="key">def</span> <span class="nam">progressStart</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t199" class="mis show_mis"><span class="n"><a href="#t199">199</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">_single_value_message</span><span class="op">(</span><span class="str">'progressStart'</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t200" class="pln"><span class="n"><a href="#t200">200</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t201" class="run"><span class="n"><a href="#t201">201</a></span><span class="t">    <span class="key">def</span> <span class="nam">progressFinish</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t202" class="mis show_mis"><span class="n"><a href="#t202">202</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">_single_value_message</span><span class="op">(</span><span class="str">'progressFinish'</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t203" class="pln"><span class="n"><a href="#t203">203</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t204" class="run"><span class="n"><a href="#t204">204</a></span><span class="t">    <span class="key">def</span> <span class="nam">progress</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t205" class="mis show_mis"><span class="n"><a href="#t205">205</a></span><span class="t">        <span class="key">import</span> <span class="nam">teamcity</span><span class="op">.</span><span class="nam">context_managers</span> <span class="key">as</span> <span class="nam">cm</span>&nbsp;</span><span class="r"></span></p>
    <p id="t206" class="mis show_mis"><span class="n"><a href="#t206">206</a></span><span class="t">        <span class="key">return</span> <span class="nam">cm</span><span class="op">.</span><span class="nam">progress</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">message</span><span class="op">=</span><span class="nam">message</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t207" class="pln"><span class="n"><a href="#t207">207</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t208" class="run"><span class="n"><a href="#t208">208</a></span><span class="t">    <span class="key">def</span> <span class="nam">buildProblem</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">description</span><span class="op">,</span> <span class="nam">identity</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t209" class="mis show_mis"><span class="n"><a href="#t209">209</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'buildProblem'</span><span class="op">,</span> <span class="nam">description</span><span class="op">=</span><span class="nam">description</span><span class="op">,</span> <span class="nam">identity</span><span class="op">=</span><span class="nam">identity</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t210" class="pln"><span class="n"><a href="#t210">210</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t211" class="run"><span class="n"><a href="#t211">211</a></span><span class="t">    <span class="key">def</span> <span class="nam">buildStatus</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">status</span><span class="op">,</span> <span class="nam">text</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t212" class="mis show_mis"><span class="n"><a href="#t212">212</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'buildStatus'</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="nam">status</span><span class="op">,</span> <span class="nam">text</span><span class="op">=</span><span class="nam">text</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t213" class="pln"><span class="n"><a href="#t213">213</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t214" class="run"><span class="n"><a href="#t214">214</a></span><span class="t">    <span class="key">def</span> <span class="nam">setParameter</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">name</span><span class="op">,</span> <span class="nam">value</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t215" class="mis show_mis"><span class="n"><a href="#t215">215</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'setParameter'</span><span class="op">,</span> <span class="nam">name</span><span class="op">=</span><span class="nam">name</span><span class="op">,</span> <span class="nam">value</span><span class="op">=</span><span class="nam">value</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t216" class="pln"><span class="n"><a href="#t216">216</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t217" class="run"><span class="n"><a href="#t217">217</a></span><span class="t">    <span class="key">def</span> <span class="nam">buildStatisticLinesCovered</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">linesCovered</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t218" class="mis show_mis"><span class="n"><a href="#t218">218</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'buildStatisticValue'</span><span class="op">,</span> <span class="nam">key</span><span class="op">=</span><span class="str">'CodeCoverageAbsLCovered'</span><span class="op">,</span> <span class="nam">value</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">linesCovered</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t219" class="pln"><span class="n"><a href="#t219">219</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t220" class="run"><span class="n"><a href="#t220">220</a></span><span class="t">    <span class="key">def</span> <span class="nam">buildStatisticTotalLines</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">totalLines</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t221" class="mis show_mis"><span class="n"><a href="#t221">221</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'buildStatisticValue'</span><span class="op">,</span> <span class="nam">key</span><span class="op">=</span><span class="str">'CodeCoverageAbsLTotal'</span><span class="op">,</span> <span class="nam">value</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">totalLines</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t222" class="pln"><span class="n"><a href="#t222">222</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t223" class="run"><span class="n"><a href="#t223">223</a></span><span class="t">    <span class="key">def</span> <span class="nam">buildStatisticLinesUncovered</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">linesUncovered</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t224" class="mis show_mis"><span class="n"><a href="#t224">224</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'buildStatisticValue'</span><span class="op">,</span> <span class="nam">key</span><span class="op">=</span><span class="str">'CodeCoverageAbsLUncovered'</span><span class="op">,</span> <span class="nam">value</span><span class="op">=</span><span class="nam">str</span><span class="op">(</span><span class="nam">linesUncovered</span><span class="op">)</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t225" class="pln"><span class="n"><a href="#t225">225</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t226" class="run"><span class="n"><a href="#t226">226</a></span><span class="t">    <span class="key">def</span> <span class="nam">enableServiceMessages</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t227" class="mis show_mis"><span class="n"><a href="#t227">227</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'enableServiceMessages'</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t228" class="pln"><span class="n"><a href="#t228">228</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t229" class="run"><span class="n"><a href="#t229">229</a></span><span class="t">    <span class="key">def</span> <span class="nam">disableServiceMessages</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t230" class="mis show_mis"><span class="n"><a href="#t230">230</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'disableServiceMessages'</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t231" class="pln"><span class="n"><a href="#t231">231</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t232" class="run"><span class="n"><a href="#t232">232</a></span><span class="t">    <span class="key">def</span> <span class="nam">serviceMessagesDisabled</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t233" class="mis show_mis"><span class="n"><a href="#t233">233</a></span><span class="t">        <span class="key">import</span> <span class="nam">teamcity</span><span class="op">.</span><span class="nam">context_managers</span> <span class="key">as</span> <span class="nam">cm</span>&nbsp;</span><span class="r"></span></p>
    <p id="t234" class="mis show_mis"><span class="n"><a href="#t234">234</a></span><span class="t">        <span class="key">return</span> <span class="nam">cm</span><span class="op">.</span><span class="nam">serviceMessagesDisabled</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t235" class="pln"><span class="n"><a href="#t235">235</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t236" class="run"><span class="n"><a href="#t236">236</a></span><span class="t">    <span class="key">def</span> <span class="nam">serviceMessagesEnabled</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t237" class="mis show_mis"><span class="n"><a href="#t237">237</a></span><span class="t">        <span class="key">import</span> <span class="nam">teamcity</span><span class="op">.</span><span class="nam">context_managers</span> <span class="key">as</span> <span class="nam">cm</span>&nbsp;</span><span class="r"></span></p>
    <p id="t238" class="mis show_mis"><span class="n"><a href="#t238">238</a></span><span class="t">        <span class="key">return</span> <span class="nam">cm</span><span class="op">.</span><span class="nam">serviceMessagesEnabled</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t239" class="pln"><span class="n"><a href="#t239">239</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t240" class="run"><span class="n"><a href="#t240">240</a></span><span class="t">    <span class="key">def</span> <span class="nam">importData</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">typeID</span><span class="op">,</span> <span class="nam">pathToXMLFile</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t241" class="mis show_mis"><span class="n"><a href="#t241">241</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'importData'</span><span class="op">,</span> <span class="nam">type</span><span class="op">=</span><span class="nam">typeID</span><span class="op">,</span> <span class="nam">path</span><span class="op">=</span><span class="nam">pathToXMLFile</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
    <p id="t242" class="pln"><span class="n"><a href="#t242">242</a></span><span class="t">&nbsp;</span><span class="r"></span></p>
    <p id="t243" class="run"><span class="n"><a href="#t243">243</a></span><span class="t">    <span class="key">def</span> <span class="nam">customMessage</span><span class="op">(</span><span class="nam">self</span><span class="op">,</span> <span class="nam">text</span><span class="op">,</span> <span class="nam">status</span><span class="op">,</span> <span class="nam">errorDetails</span><span class="op">=</span><span class="str">''</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="key">None</span><span class="op">)</span><span class="op">:</span>&nbsp;</span><span class="r"></span></p>
    <p id="t244" class="mis show_mis"><span class="n"><a href="#t244">244</a></span><span class="t">        <span class="nam">self</span><span class="op">.</span><span class="nam">message</span><span class="op">(</span><span class="str">'message'</span><span class="op">,</span> <span class="nam">text</span><span class="op">=</span><span class="nam">text</span><span class="op">,</span> <span class="nam">status</span><span class="op">=</span><span class="nam">status</span><span class="op">,</span> <span class="nam">errorDetails</span><span class="op">=</span><span class="nam">errorDetails</span><span class="op">,</span> <span class="nam">flowId</span><span class="op">=</span><span class="nam">flowId</span><span class="op">)</span>&nbsp;</span><span class="r"></span></p>
</div>
<div id="footer">
    <div class="content">
        <p>
            <a class="nav" href="index.html">&#xab; index</a> &nbsp; &nbsp; <a class="nav" href="https://coverage.readthedocs.io">coverage.py v5.1</a>,
            created at 2020-06-08 16:42
        </p>
    </div>
</div>
</body>
</html>
